
package com.duobaoyu.dby.supply.db.entity.order;

import com.baomidou.mybatisplus.annotation.*;
import com.duobaoyu.dby.common.mybatis.base.BaseEntity;
import com.duobaoyu.dby.saas.product.common.base.json.SaleAttribute;
import com.duobaoyu.dby.saas.product.common.base.json.TemplateJson;
import com.duobaoyu.dby.supply.db.entity.extend.OrderProductParamExtendInfo;
import com.duobaoyu.dby.supply.db.entity.extend.OrderProductResultExtendInfo;
import com.duobaoyu.dby.supply.db.handler.OrderProductParamExtendInfoTypeHandler;
import com.duobaoyu.dby.supply.db.handler.OrderProductResultExtendInfoTypeHandler;
import com.duobaoyu.dby.supply.db.handler.SaleAttributeTypeHandler;
import com.duobaoyu.dby.supply.db.handler.TemplateJsonTypeHandler;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.*;
import lombok.experimental.Accessors;

import java.math.BigDecimal;
import java.util.List;

/**
 * 订单商品信息表
 *
 * @author LY
 * @email 249007302@qq.com
 * @date 2023-09-26 10:42:54
 */
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@Accessors(chain = true)
@ApiModel(value = "订单商品信息表")
@EqualsAndHashCode(callSuper = true)
@TableName(value = "sc_order_product", autoResultMap = true)
public class OrderProduct extends BaseEntity implements Cloneable{
	private static final long serialVersionUID = 1L;

	/**
	 * 主键
	 */
	@TableId(type = IdType.ASSIGN_ID)
	private Long id;
	/**
	 * 供应链订单号
	 */
	@ApiModelProperty(value = "供应链订单号")
	private String orderSn;
	/**
	 * 渠道编码
	 */
	@ApiModelProperty(value = "渠道编码")
	private String channelCode;
	/**
	 * 商品类型 :real->实物商品；call->话费快充商品；coupon->卡券；recharge->直充商品；call_slow->话费慢充商品；electricity_fees_slow->电费慢充商品
	 */
	@ApiModelProperty(value = "商品类型 :real->实物商品；call->话费快充商品；coupon->卡券；recharge->直充商品；call_slow->话费慢充商品；electricity_fees_slow->电费慢充商品")
	private String productType;
	/**
	 * 仓储类型,1:保税区邮、2:香港直邮、3:国内、4:法国直邮、5:澳门直邮、6:欧洲直邮、7:澳洲直邮、8:韩国直邮、9:美国直邮、10:日本直邮、11:德国直邮、12:新西兰直邮
	 */
	@ApiModelProperty(value = "仓储类型,1:保税区邮、2:香港直邮、3:国内、4:法国直邮、5:澳门直邮、6:欧洲直邮、7:澳洲直邮、8:韩国直邮、9:美国直邮、10:日本直邮、11:德国直邮、12:新西兰直邮")
	private Integer repositoryType;
	/**
	 * 商品编码
	 */
	@ApiModelProperty(value = "商品编码")
	private String productCode;
	/**
	 * 渠道商品编码
	 */
	@ApiModelProperty(value = "渠道商品编码")
	private String channelProductCode;
	/**
	 * SKU编码
	 */
	@ApiModelProperty(value = "SKU编码")
	private String skuCode;
	/**
	 * 渠道SKU编码
	 */
	@ApiModelProperty(value = "渠道SKU编码")
	private String channelSkuCode;
	/**
	 * 渠道specId
	 */
	@ApiModelProperty(value = "渠道specId")
	private String channelSpecId;
	/**
	 * 渠道供应商Id
	 */
	@ApiModelProperty(value = "渠道供应商Id")
	private String channelSupplierId;
	/**
	 * 三级类目ID
	 */
	@ApiModelProperty(value = "三级类目ID")
	private Long thirdClassifyId;
	/**
	 * 三级类目名称
	 */
	@ApiModelProperty(value = "三级类目名称")
	private String thirdClassifyName;
	/**
	 * SKU名称
	 */
	@ApiModelProperty(value = "SKU名称")
	private String skuName;
	/**
	 * SKU展示图
	 */
	@ApiModelProperty(value = "SKU展示图")
	private String skuPic;
	/**
	 * 商品数量
	 */
	@ApiModelProperty(value = "商品数量")
	private Integer skuNum;
	/**
	 * 商品单位
	 */
	@ApiModelProperty(value = "商品单位")
	private String unit;
	/**
	 * 销售属性
	 */
	@ApiModelProperty(value = "销售属性")
	@TableField(typeHandler = SaleAttributeTypeHandler.class)
	private List<SaleAttribute> saleAttributes;
	/**
	 * 模版 （直充商品存在模板）
	 */
	@TableField(typeHandler = TemplateJsonTypeHandler.class)
	private TemplateJson templateJson;
	/**
	 * 原价(面额)
	 */
	@ApiModelProperty(value = "原价(面额)")
	private BigDecimal originalPrice;
	/**
	 * 渠道未税价
	 */
	@ApiModelProperty(value = "渠道未税价")
	private BigDecimal channelNakedPrice;
	/**
	 * 平台销售价格
	 */
	@ApiModelProperty(value = "平台销售价格")
	private BigDecimal platformSellPrice;
	/**
	 * 平台销售价格
	 */
	@ApiModelProperty(value = "平台销售总额")
	private BigDecimal platformSellAmount;
	/**
	 * 平台成本价格
	 */
	@ApiModelProperty(value = "平台成本价格")
	private BigDecimal platformPrice;
	/**
	 * 平台成本价格
	 */
	@ApiModelProperty(value = "平台成本总额")
	private BigDecimal platformAmount;
	/**
	 * 渠道商品实际支付金额
	 */
	@ApiModelProperty(value = "渠道商品实际支付金额")
	private BigDecimal channelPayAmount;
	/**
	 * 到账金额
	 */
	@ApiModelProperty(value = "到账金额")
	private BigDecimal actualAmount;
	/**
	 * 税率
	 */
	@ApiModelProperty(value = "税率")
	private BigDecimal skuTaxRate;
	/**
	 * 品牌ID
	 */
	@ApiModelProperty(value = "品牌ID")
	private Long brandId;
	/**
	 * 品牌名称
	 */
	@ApiModelProperty(value = "品牌名称")
	private String brandName;
	/**
	 * 1对内，2不对内
	 */
	@ApiModelProperty(value = "1对内，2不对内")
	private Integer insideStatus;
	/**
	 * 是否需要校验身份证
	 */
	@ApiModelProperty(value = "是否需要校验身份证,false:否、true:是")
	private Boolean needVerifyIdentity;
	/**
	 * 退款/拒收商品数量
	 */
	private Integer channelReturnSkuNum;

	/**
	 * 退运费金额(平安渠道)
	 */
	private BigDecimal channelReturnFreightAmount;
	/**
	 * 扩展数据
	 */
	@ApiModelProperty("扩展数据")
	@TableField(typeHandler = OrderProductParamExtendInfoTypeHandler.class)
	private OrderProductParamExtendInfo paramExtend;
	/**
	 * 扩展数据
	 */
	@ApiModelProperty("扩展数据")
	@TableField(typeHandler = OrderProductResultExtendInfoTypeHandler.class)
	private OrderProductResultExtendInfo resultExtend;
	/**
	 * 运营备注
	 */
	@ApiModelProperty("运营备注")
	private String operateRemark;
	/**
	 * 版本号-用作乐观锁
	 */
	@Version
	@ApiModelProperty(value = "版本号-用作乐观锁")
	private Integer version;
	/**
	 * 是否删除 0-否 1-是
	 */
	@TableLogic(value = "0", delval = "1")
	@ApiModelProperty(value = "是否删除 0-否 1-是")
	private Integer delFlag;

	@Override
	public OrderProduct clone() {
		try {
			return (OrderProduct)super.clone();
		}catch (Exception e){
			return null;
		}
	}
}
